const router = require('koa-router')()
const writeJsonFile = require('write-json-file');
const loadJsonFile = require('load-json-file');

router.prefix('/mock')

router.get('/*', async function (ctx, next) {
  sethead(ctx)
  let json = await loadJsonFile('db/mock.json')
  const map = {}
  for (let i = 0; i < json.length; i++) {
    map[json[i].url] = json[i].data
  }
  console.log(map)
  if (map[ctx.url.replace('/mock/', '')]) {
    ctx.body = map[ctx.url.replace('/mock/', '')]
  }
  ctx.body = map[ctx.url.replace('/mock/', '')] || {
    code: 404,
    data: '您还没有设置这个mock数据'
  }
})
router.post('/getAll', async function (ctx, next) {
  sethead(ctx)
  let json = await loadJsonFile('db/mock.json')
  ctx.body = {
    code: 200,
    data: json
  }
})
router.post('/updataOne', async function (ctx, next) {
  sethead(ctx)
  let json = await loadJsonFile('db/mock.json')
  for (let i = 0; i < json.length; i++) {
    if(json[i].id == ctx.request.body.id){
      console.log(ctx.request.body)
      json[i] = ctx.request.body
    }
  }
  await writeJsonFile('db/mock.json', json);
  ctx.body = {
    code: 200,
    data: json
  }
})
router.post('/removeOne', async function (ctx, next) {
  sethead(ctx)
  let json = await loadJsonFile('db/mock.json')
  const list = []
  for (let i = 0; i < json.length; i++) {
    if(json[i].id != ctx.request.body.id){
      list.push(json[i])
    }
  }
  await writeJsonFile('db/mock.json', list);
  ctx.body = {
    code: 200,
    data: json
  }
})
router.post('/creatMock', async function (ctx, next) {
  sethead(ctx)
  let json = await loadJsonFile('db/mock.json')
  for (let i = 0; i < json.length; i++) {
    if(json[i].url==ctx.request.body.url){
      ctx.body = {
        code: 500,
        data: 'url地址为 '+ctx.request.body.url+' 的mock数据已经存在，请勿重复添加'
      }
      return
    }
  }
  json.push({
    "id": json[json.length - 1].id + 1,
    ...ctx.request.body
  })
  await writeJsonFile('db/mock.json', json);
  ctx.body = {
    code: 200,
    data: json
  }
})
// 临时增加访问头
function sethead(ctx) {
  ctx.set('Access-Control-Allow-Origin', '*'); //允许来自所有域名请求(不携带cookie请求可以用*，如果有携带cookie请求必须指定域名)
  ctx.set('Access-Control-Allow-Methods', 'OPTIONS, GET, PUT, POST, DELETE'); // 设置所允许的HTTP请求方法
  ctx.set('Access-Control-Allow-Headers', 'x-requested-with, accept, origin, content-type'); // 字段是必需的。它也是一个逗号分隔的字符串，表明服务器支持的所有头信息字段.
  ctx.set('Content-Type', 'application/json;charset=utf-8'); // Content-Type表示具体请求中的媒体类型信息
  ctx.set('Access-Control-Allow-Credentials', true); // 该字段可选。它的值是一个布尔值，表示是否允许发送Cookie。默认情况下，Cookie不包括在CORS请求之中。
  ctx.set('Access-Control-Max-Age', 300);
}
module.exports = router
